package com.hopedove.net

import com.hopedove.data.Datetime
import org.junit.Test

import org.junit.Assert.*

/**
 * Example local unit test, which will execute on the development machine (host).
 *
 * See [testing documentation](http://d.android.com/tools/testing).
 */
class ExampleUnitTest {
    private val dateTimeCn = "1998年02月31日 17时51分32秒"
    private val dateTimeEn = "2021-04-01 17:51:32"

    @Test
    fun addition_isCorrect() {
        assert(Datetime.testCnFormatMatches(dateTimeCn))
        assert(Datetime.testEnFormatMatches(dateTimeEn))
    }

    @Test
    fun date_regex_Wrong() {
        assertFalse(Datetime.testCnFormatMatches("98年2月31日"))
        assertFalse(Datetime.testEnFormatMatches("1998-02-31"))
        assertFalse(Datetime.testCnFormatMatches("1998年2月31日"))
        assertFalse(Datetime.testCnFormatMatches("2021年02月31日"))
    }

    @Test
    fun date_regex_group() {
        val count = Datetime.matchesCnFormat("2021年02月28日").groupCount()
        assertEquals(6, count)
    }

    @Test
    fun date_regex_group_value() {
        val matcher = Datetime.matchesCnFormat("2021年02月28日 17时52分39秒")
        assert(matcher.matches())
        assertEquals("2021年02月28日 17时52分39秒", matcher.group(0))
        assertEquals("2021", matcher.group(1))
        assertEquals("02", matcher.group(2))
        assertEquals("28", matcher.group(3))
        assertEquals("17", matcher.group(4))
        assertEquals("52", matcher.group(5))
        assertEquals("39", matcher.group(6))

    }

    @Test
    fun date_cn_format() {
        val date = Datetime.parseCnFormat("2021年02月27日")
        assertNull(date)
    }

    @Test
    fun date_en_format() {
        val date = Datetime.parseEnFormat("2021-04-01 17:51:32")
        assertEquals("2021年04月01日", date.dateFormatCn())
        assertEquals("2021-04-01", date.dateFormatEn())
        assertEquals("2021年04月01日 17时51分32秒", date.dateTimeFormatCn())
        assertEquals("2021-04-01 17:51:32", date.dateTimeFormatEn())

    }

}